package com.tjetc;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class _6Throws {
    public static void main(String[] args) throws Exception{
        /*
            throws处理方式：
            1.可以抛出多个异常，多个异常之间使用逗号
            2.可以抛出该异常类型，或者是父类类型

            我们在处理异常的时候 应该对应到具体的类型 但是上课为了方便 我们统一就处理了父类Exception
         */
        // Unhandled exception: java.io.FileNotFoundException
        try {
            f();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        f();
        // 运行时异常 虽然你没有写处理方式，但是其实隐藏着 抛出处理的解决方式
        System.out.println(10 / 0);
    }

    static void f() throws  FileNotFoundException, IOException, ArrayIndexOutOfBoundsException {

        // 该对象在产生的时候 会出现编译时异常
        try {
            FileInputStream fileInputStream = new FileInputStream("");
        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }
    }



}

// 注意： 发生重写时，子类抛出的异常要么和父类一致 要么是父类异常类型的子类
class A {
    void f() throws Exception{};
}

class B extends A{
    @Override
    void f() throws IndexOutOfBoundsException{

    }
}
